package Day007_Collection_泛型_数据结构.Demo04_泛型;

/*
    泛型接口: 在接口上定义泛型
            格式:
                public interface 接口名<E>{

                }
            使用场景:
                1.当定义接口中方法的时候,方法的参数类型或者返回值类型不确定,但有要类型相同
                2.定义方法时,参数类型不确定

        实现类:  1.当实现类实现接口的时候,确定泛型接口的泛型具体数据类型
                    class Aimp1 implements A<Integer>
                2.当实现类实现接口的时候,不确定泛型接口的泛型具体数据类型,而是等到创建对象的时候
                    class Aimp2<E> implements A<E>
 */

public class demo3定义和使用含有泛型的接口 {
    public static void main(String[] args) {

        //创建实现类2对象,调用方法
        A<String> a = new Aimp2();
        a.method1("jack");
        a.method2("jack");

        A<Integer> a2 = new Aimp2<>();
        a2.method1(100);
        a2.method2(100);
    }
}


//接口
interface A<E>{
    public abstract E method1(E e);
    public abstract void method2(E e);

}

//实现类1
class Aimp1 implements A<Integer>{

    @Override
    public Integer method1(Integer integer) {
        return null;
    }

    @Override
    public void method2(Integer integer) {

    }
}

//实现类2
class Aimp2<E> implements A<E>{

    @Override
    public E method1(E e) {
        return null;
    }

    @Override
    public void method2(E e) {

    }
}
